
; Macro que inicializa los contadores y punteros
; para recorrer la imagen

%macro initViejo 0
	mov eax,H
		dec eax
		dec eax
		mul dword W
		dec eax
		dec eax
	mov ecx,eax
	mov esi,SRC
	mov edx,SRC
		add edx,W
	mov ebx,SRC
		add ebx,W
		add ebx,W
	mov edi,DST
		add edi,W
%endmacro

; macro que satura el resultado de aplicar
; el operador y lo escribe en la imagen resultado

%macro drawit 0
	cmp ecx,0xFF
	jle .fin
	mov cl,0xFF		;if(ecx>255) ecx=255
  .fin:
	mov [edi],cl	;escribir el pixel en la imagen destino
%endmacro

; macro que satura (negativos a cero) el resultado de 
; aplicar el operador y lo escribe en la imagen resultado

%macro drawit_pos 0
	cmp ecx,0
		jg .satp
		xor cl,cl			;if(ecx<0) ecx=0
		jmp .fin
	.satp:
		cmp ecx,0x000000FF
		jle .fin
		mov cl,0xFF			;if(ecx>255) ecx=255
	.fin:
		mov [edi],cl		;escribir el pixel en la imagen destino
%endmacro

; De aca hacia abajo estan las macros que se usan
; para aplicar los operadores a la imagen

%macro mul_m1 1
	xor eax,eax
	mov al,[%1]
	sub ecx,eax
%endmacro

%macro mul_p1 1
	xor eax,eax
	mov al,[%1]
	add ecx,eax
%endmacro

%macro mul_m2 1
	xor eax,eax
	mov al,[%1]
	sub ecx,eax
	sub ecx,eax
%endmacro

%macro mul_p2 1
	xor eax,eax
	mov al,[%1]
	add ecx,eax
	add ecx,eax
%endmacro

%macro abs 0
	cmp ecx, 0
	jge %%fin
	neg ecx
%%fin:
%endmacro
